[id].vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <template>
  2. <LayoutContainer>
  3. <UiLoadingPanel v-if="pending" />
  4. <div v-else>
  5. <h2> Editer la zone de résidence</h2>
  6. <UiForm
  7. ref="form"
  8. :model="ResidenceArea"
  9. :entity="residence_areas"
  10. :submitActions="submitActions"
  11. >
  12. <UiInputText field="label" v-model="residence_areas.label" :rules="rules()" />
  13. </UiForm>
  14. </div>
  15. </LayoutContainer>
  16. </template>
  17. <script setup lang="ts">
  18. import { ref, onMounted } from 'vue'
  19. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  20. import ResidenceArea from '~/models/Billing/ResidenceArea'
  21. import { useRoute } from 'vue-router'
  22. import { useI18n } from 'vue-i18n'
  23. import {AnyJson} from "~/types/data";
  24. import {SUBMIT_TYPE} from "~/types/enum/enums";
  25. const i18n = useI18n()
  26. const { fetch } = useEntityFetch()
  27. const route = useRoute()
  28. const id = ref(route.params.id)
  29. const goBackRoute = { path: `/parameters`, query: { tab: 'residenceAreas' } }
  30. const submitActions = computed(() => {
  31. let actions: AnyJson = {}
  32. actions[SUBMIT_TYPE.SAVE_AND_BACK] = goBackRoute
  33. return actions
  34. })
  35. const {data : residence_areas, pending} = fetch(ResidenceArea, id.value)
  36. const rules = () => [
  37. (label: string | null) =>
  38. (label !== null && label.length > 0) || i18n.t('please_enter_a_value'),
  39. ]
  40. </script>